/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package armazemseujose.model;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author BRUNA
 */
public class listaVendas {

    private ArrayList<Venda> vendas = new ArrayList();
    private listaClientes clientes;
    private listaItens itens;
    
    public listaVendas() throws FileNotFoundException {
        clientes = new listaClientes();
        itens = new listaItens();      
        lerArquivoVendas();
    }

    public void add(Venda v) throws IOException {
        vendas.add(v);
        salvaArquivoVenda(v);
    }
    
    public void lerArquivoVendas() throws FileNotFoundException {
        Scanner scanner = new Scanner(new FileReader("vendas.txt"))
                .useDelimiter("\\||\\n");
        while (scanner.hasNext()) {
            String nomeCliente = scanner.next();
            Cliente cliente = getClientes().procuraCliente(nomeCliente);
            Venda venda = new Venda(cliente);
            String produtos = scanner.next();
            venda.separaItensComprados(getItens(), produtos);
            String preco = scanner.next();
            String precoTotal = preco.substring(0, preco.length() - 1);
            double i = Double.parseDouble(precoTotal);
            venda.setValorTotal(i);
            getVendas().add(venda);
        }
    }

    public void salvaArquivoVenda(Venda venda) throws IOException {
        File dir = new File(".");
        File arq = new File(dir, "vendas.txt");
        FileWriter fileWriter = new FileWriter(arq, true);
        PrintWriter printWriter = new PrintWriter(fileWriter);
        printWriter.print(venda.getCliente().getNome() + "|");
        ArrayList<infoItemVenda> itens = venda.getItens();
        int cont = 0; // variavel para controlar o fim de array de itens
        for (infoItemVenda item : itens) {
            printWriter.print(item.getItem().getNome() + "-" + item.getQuantidade());
            cont++;
            if (cont != itens.size()) {
                printWriter.print(";");
            }
        }
        printWriter.println("|" + venda.getValorTotal());
        printWriter.flush();
    }

    /**
     * @return the vendas
     */
    public ArrayList<Venda> getVendas() {
        return vendas;
    }

    /**
     * @param vendas the vendas to set
     */
    public void setVendas(ArrayList<Venda> vendas) {
        this.vendas = vendas;
    }

    /**
     * @return the clientes
     */
    public listaClientes getClientes() {
        return clientes;
    }

    /**
     * @param clientes the clientes to set
     */
    public void setClientes(listaClientes clientes) {
        this.clientes = clientes;
    }

    /**
     * @return the itens
     */
    public listaItens getItens() {
        return itens;
    }

    /**
     * @param itens the itens to set
     */
    public void setItens(listaItens itens) {
        this.itens = itens;
    }
    
    public double calculaTotalVenda(){
        double total = 0;
        for(Venda i : vendas){
            total = total + i.getValorTotal();
        }
        return total;
    }

}
